#ifndef CUFFTDX_FFT_21_FP32_FWD_PTX_HPP
#define CUFFTDX_FFT_21_FP32_FWD_PTX_HPP



template<> __forceinline__ __device__ void cufftdx_private_function<7, float, 1>(cufftdx::detail::complex<float> *rmem, unsigned smem){

asm volatile (R"({
.reg .f32 f<521>;
.reg .b64 rd<2>;
add.f32 f85, %50, %90;
add.f32 f86, %42, f85;
add.f32 f87, %58, %82;
add.f32 f88, f87, f86;
add.f32 f89, %66, %74;
add.f32 f90, f89, f88;
add.f32 f91, %51, %91;
add.f32 f92, %43, f91;
add.f32 f93, %59, %83;
add.f32 f94, f93, f92;
add.f32 f95, %67, %75;
add.f32 f96, f95, f94;
fma.rn.f32 f97, f85, 0f3F1F9D07, %42;
mul.f32 f98, f87, 0f3E63DC87;
sub.f32 f99, f97, f98;
mul.f32 f100, f89, 0f3F66A5E5;
sub.f32 f101, f99, f100;
sub.f32 f102, %51, %91;
mul.f32 f103, f102, 0f3F48261C;
sub.f32 f104, %59, %83;
mul.f32 f105, f104, 0fBF7994E0;
sub.f32 f106, f105, f103;
sub.f32 f107, %67, %75;
mul.f32 f108, f107, 0f3EDE2602;
sub.f32 f109, f106, f108;
sub.f32 f110, f101, f109;
add.f32 f111, f109, f101;
mul.f32 f112, f85, 0f3E63DC87;
sub.f32 f113, %42, f112;
mul.f32 f114, f87, 0f3F66A5E5;
sub.f32 f115, f113, f114;
fma.rn.f32 f116, f89, 0f3F1F9D07, f115;
mul.f32 f117, f102, 0f3F7994E0;
mul.f32 f118, f104, 0f3EDE2602;
sub.f32 f119, f118, f117;
fma.rn.f32 f120, f107, 0f3F48261C, f119;
sub.f32 f121, f116, f120;
add.f32 f122, f120, f116;
mul.f32 f123, f85, 0f3F66A5E5;
sub.f32 f124, %42, f123;
fma.rn.f32 f125, f87, 0f3F1F9D07, f124;
mul.f32 f126, f89, 0f3E63DC87;
sub.f32 f127, f125, f126;
mul.f32 f128, f102, 0f3EDE2602;
mul.f32 f129, f104, 0f3F48261C;
sub.f32 f130, f129, f128;
mul.f32 f131, f107, 0f3F7994E0;
sub.f32 f132, f130, f131;
sub.f32 f133, f127, f132;
add.f32 f134, f132, f127;
fma.rn.f32 f135, f91, 0f3F1F9D07, %43;
mul.f32 f136, f93, 0f3E63DC87;
sub.f32 f137, f135, f136;
mul.f32 f138, f95, 0f3F66A5E5;
sub.f32 f139, f137, f138;
sub.f32 f140, %50, %90;
mul.f32 f141, f140, 0f3F48261C;
sub.f32 f142, %58, %82;
mul.f32 f143, f142, 0fBF7994E0;
sub.f32 f144, f143, f141;
sub.f32 f145, %66, %74;
mul.f32 f146, f145, 0f3EDE2602;
sub.f32 f147, f144, f146;
add.f32 f148, f147, f139;
sub.f32 f149, f139, f147;
mul.f32 f150, f91, 0f3E63DC87;
sub.f32 f151, %43, f150;
mul.f32 f152, f93, 0f3F66A5E5;
sub.f32 f153, f151, f152;
fma.rn.f32 f154, f95, 0f3F1F9D07, f153;
mul.f32 f155, f140, 0f3F7994E0;
mul.f32 f156, f142, 0f3EDE2602;
sub.f32 f157, f156, f155;
fma.rn.f32 f158, f145, 0f3F48261C, f157;
add.f32 f159, f158, f154;
sub.f32 f160, f154, f158;
mul.f32 f161, f91, 0f3F66A5E5;
sub.f32 f162, %43, f161;
fma.rn.f32 f163, f93, 0f3F1F9D07, f162;
mul.f32 f164, f95, 0f3E63DC87;
sub.f32 f165, f163, f164;
mul.f32 f166, f140, 0f3EDE2602;
mul.f32 f167, f142, 0f3F48261C;
sub.f32 f168, f167, f166;
mul.f32 f169, f145, 0f3F7994E0;
sub.f32 f170, f168, f169;
add.f32 f171, f170, f165;
sub.f32 f172, f165, f170;
add.f32 f173, %52, %92;
add.f32 f174, %44, f173;
add.f32 f175, %60, %84;
add.f32 f176, f175, f174;
add.f32 f177, %68, %76;
add.f32 f178, f177, f176;
add.f32 f179, %54, %94;
add.f32 f180, %46, f179;
add.f32 f181, %62, %86;
add.f32 f182, f181, f180;
add.f32 f183, %70, %78;
add.f32 f184, f183, f182;
fma.rn.f32 f185, f173, 0f3F1F9D07, %44;
mul.f32 f186, f175, 0f3E63DC87;
sub.f32 f187, f185, f186;
mul.f32 f188, f177, 0f3F66A5E5;
sub.f32 f189, f187, f188;
sub.f32 f190, %54, %94;
mul.f32 f191, f190, 0f3F48261C;
sub.f32 f192, %62, %86;
mul.f32 f193, f192, 0fBF7994E0;
sub.f32 f194, f193, f191;
sub.f32 f195, %70, %78;
mul.f32 f196, f195, 0f3EDE2602;
sub.f32 f197, f194, f196;
sub.f32 f198, f189, f197;
add.f32 f199, f197, f189;
mul.f32 f200, f173, 0f3E63DC87;
sub.f32 f201, %44, f200;
mul.f32 f202, f175, 0f3F66A5E5;
sub.f32 f203, f201, f202;
fma.rn.f32 f204, f177, 0f3F1F9D07, f203;
mul.f32 f205, f190, 0f3F7994E0;
mul.f32 f206, f192, 0f3EDE2602;
sub.f32 f207, f206, f205;
fma.rn.f32 f208, f195, 0f3F48261C, f207;
sub.f32 f209, f204, f208;
add.f32 f210, f208, f204;
mul.f32 f211, f173, 0f3F66A5E5;
sub.f32 f212, %44, f211;
fma.rn.f32 f213, f175, 0f3F1F9D07, f212;
mul.f32 f214, f177, 0f3E63DC87;
sub.f32 f215, f213, f214;
mul.f32 f216, f190, 0f3EDE2602;
mul.f32 f217, f192, 0f3F48261C;
sub.f32 f218, f217, f216;
mul.f32 f219, f195, 0f3F7994E0;
sub.f32 f220, f218, f219;
sub.f32 f221, f215, f220;
add.f32 f222, f220, f215;
fma.rn.f32 f223, f179, 0f3F1F9D07, %46;
mul.f32 f224, f181, 0f3E63DC87;
sub.f32 f225, f223, f224;
mul.f32 f226, f183, 0f3F66A5E5;
sub.f32 f227, f225, f226;
sub.f32 f228, %52, %92;
mul.f32 f229, f228, 0f3F48261C;
sub.f32 f230, %60, %84;
mul.f32 f231, f230, 0fBF7994E0;
sub.f32 f232, f231, f229;
sub.f32 f233, %68, %76;
mul.f32 f234, f233, 0f3EDE2602;
sub.f32 f235, f232, f234;
add.f32 f236, f235, f227;
sub.f32 f237, f227, f235;
mul.f32 f238, f179, 0f3E63DC87;
sub.f32 f239, %46, f238;
mul.f32 f240, f181, 0f3F66A5E5;
sub.f32 f241, f239, f240;
fma.rn.f32 f242, f183, 0f3F1F9D07, f241;
mul.f32 f243, f228, 0f3F7994E0;
mul.f32 f244, f230, 0f3EDE2602;
sub.f32 f245, f244, f243;
fma.rn.f32 f246, f233, 0f3F48261C, f245;
add.f32 f247, f246, f242;
sub.f32 f248, f242, f246;
mul.f32 f249, f179, 0f3F66A5E5;
sub.f32 f250, %46, f249;
fma.rn.f32 f251, f181, 0f3F1F9D07, f250;
mul.f32 f252, f183, 0f3E63DC87;
sub.f32 f253, f251, f252;
mul.f32 f254, f228, 0f3EDE2602;
mul.f32 f255, f230, 0f3F48261C;
sub.f32 f256, f255, f254;
mul.f32 f257, f233, 0f3F7994E0;
sub.f32 f258, f256, f257;
add.f32 f259, f258, f253;
sub.f32 f260, f253, f258;
add.f32 f261, %55, %95;
add.f32 f262, %47, f261;
add.f32 f263, %63, %87;
add.f32 f264, f263, f262;
add.f32 f265, %71, %79;
add.f32 f266, f265, f264;
add.f32 f267, %57, %96;
add.f32 f268, %49, f267;
add.f32 f269, %65, %89;
add.f32 f270, f269, f268;
add.f32 f271, %73, %81;
add.f32 f272, f271, f270;
fma.rn.f32 f273, f261, 0f3F1F9D07, %47;
mul.f32 f274, f263, 0f3E63DC87;
sub.f32 f275, f273, f274;
mul.f32 f276, f265, 0f3F66A5E5;
sub.f32 f277, f275, f276;
sub.f32 f278, %57, %96;
mul.f32 f279, f278, 0f3F48261C;
sub.f32 f280, %65, %89;
mul.f32 f281, f280, 0fBF7994E0;
sub.f32 f282, f281, f279;
sub.f32 f283, %73, %81;
mul.f32 f284, f283, 0f3EDE2602;
sub.f32 f285, f282, f284;
sub.f32 f286, f277, f285;
add.f32 f287, f285, f277;
mul.f32 f288, f261, 0f3E63DC87;
sub.f32 f289, %47, f288;
mul.f32 f290, f263, 0f3F66A5E5;
sub.f32 f291, f289, f290;
fma.rn.f32 f292, f265, 0f3F1F9D07, f291;
mul.f32 f293, f278, 0f3F7994E0;
mul.f32 f294, f280, 0f3EDE2602;
sub.f32 f295, f294, f293;
fma.rn.f32 f296, f283, 0f3F48261C, f295;
sub.f32 f297, f292, f296;
add.f32 f298, f296, f292;
mul.f32 f299, f261, 0f3F66A5E5;
sub.f32 f300, %47, f299;
fma.rn.f32 f301, f263, 0f3F1F9D07, f300;
mul.f32 f302, f265, 0f3E63DC87;
sub.f32 f303, f301, f302;
mul.f32 f304, f278, 0f3EDE2602;
mul.f32 f305, f280, 0f3F48261C;
sub.f32 f306, f305, f304;
mul.f32 f307, f283, 0f3F7994E0;
sub.f32 f308, f306, f307;
sub.f32 f309, f303, f308;
add.f32 f310, f308, f303;
fma.rn.f32 f311, f267, 0f3F1F9D07, %49;
mul.f32 f312, f269, 0f3E63DC87;
sub.f32 f313, f311, f312;
mul.f32 f314, f271, 0f3F66A5E5;
sub.f32 f315, f313, f314;
sub.f32 f316, %55, %95;
mul.f32 f317, f316, 0f3F48261C;
sub.f32 f318, %63, %87;
mul.f32 f319, f318, 0fBF7994E0;
sub.f32 f320, f319, f317;
sub.f32 f321, %71, %79;
mul.f32 f322, f321, 0f3EDE2602;
sub.f32 f323, f320, f322;
add.f32 f324, f323, f315;
sub.f32 f325, f315, f323;
mul.f32 f326, f267, 0f3E63DC87;
sub.f32 f327, %49, f326;
mul.f32 f328, f269, 0f3F66A5E5;
sub.f32 f329, f327, f328;
fma.rn.f32 f330, f271, 0f3F1F9D07, f329;
mul.f32 f331, f316, 0f3F7994E0;
mul.f32 f332, f318, 0f3EDE2602;
sub.f32 f333, f332, f331;
fma.rn.f32 f334, f321, 0f3F48261C, f333;
add.f32 f335, f334, f330;
sub.f32 f336, f330, f334;
mul.f32 f337, f267, 0f3F66A5E5;
sub.f32 f338, %49, f337;
fma.rn.f32 f339, f269, 0f3F1F9D07, f338;
mul.f32 f340, f271, 0f3E63DC87;
sub.f32 f341, f339, f340;
mul.f32 f342, f316, 0f3EDE2602;
mul.f32 f343, f318, 0f3F48261C;
sub.f32 f344, f343, f342;
mul.f32 f345, f321, 0f3F7994E0;
sub.f32 f346, f344, f345;
add.f32 f347, f346, f341;
sub.f32 f348, f341, f346;
mul.f32 f349, f198, 0f3F74A06B;
mul.f32 f350, f236, 0fBE96EA26;
sub.f32 f351, f349, f350;
mul.f32 f352, f236, 0f3F74A06B;
fma.rn.f32 f353, f198, 0fBE96EA26, f352;
mul.f32 f354, f286, 0f3F538462;
mul.f32 f355, f324, 0fBF1035BE;
sub.f32 f356, f354, f355;
mul.f32 f357, f324, 0f3F538462;
fma.rn.f32 f358, f286, 0fBF1035BE, f357;
mul.f32 f359, f209, 0f3F538462;
mul.f32 f360, f247, 0fBF1035BE;
sub.f32 f361, f359, f360;
mul.f32 f362, f247, 0f3F538462;
fma.rn.f32 f363, f209, 0fBF1035BE, f362;
mul.f32 f364, f297, 0f3EBB0DFB;
mul.f32 f365, f335, 0fBF6E4DBE;
sub.f32 f366, f364, f365;
mul.f32 f367, f335, 0f3EBB0DFB;
fma.rn.f32 f368, f297, 0fBF6E4DBE, f367;
mul.f32 f369, f221, 0f3F1F9D07;
mul.f32 f370, f259, 0fBF48261C;
sub.f32 f371, f369, f370;
mul.f32 f372, f259, 0f3F1F9D07;
fma.rn.f32 f373, f221, 0fBF48261C, f372;
mul.f32 f374, f309, 0fBE63DC87;
mul.f32 f375, f347, 0fBF7994E0;
sub.f32 f376, f374, f375;
mul.f32 f377, f347, 0fBE63DC87;
fma.rn.f32 f378, f309, 0fBF7994E0, f377;
mul.f32 f379, f222, 0f3EBB0DFB;
mul.f32 f380, f260, 0fBF6E4DBE;
sub.f32 f381, f379, f380;
mul.f32 f382, f260, 0f3EBB0DFB;
fma.rn.f32 f383, f222, 0fBF6E4DBE, f382;
mul.f32 f384, f310, 0fBF3BA94A;
mul.f32 f385, f348, 0fBF2E1FCD;
sub.f32 f386, f384, f385;
mul.f32 f387, f348, 0fBF3BA94A;
fma.rn.f32 f388, f310, 0fBF2E1FCD, f387;
mul.f32 f389, f210, 0f3D990C17;
mul.f32 f390, f248, 0fBF7F48C0;
sub.f32 f391, f389, f390;
mul.f32 f392, f248, 0f3D990C17;
fma.rn.f32 f393, f210, 0fBF7F48C0, f392;
mul.f32 f394, f298, 0fBF7D2404;
mul.f32 f395, f336, 0fBE189E89;
sub.f32 f396, f394, f395;
mul.f32 f397, f336, 0fBF7D2404;
fma.rn.f32 f398, f298, 0fBE189E89, f397;
mul.f32 f399, f199, 0fBE63DC87;
mul.f32 f400, f237, 0fBF7994E0;
sub.f32 f401, f399, f400;
mul.f32 f402, f237, 0fBE63DC87;
fma.rn.f32 f403, f199, 0fBF7994E0, f402;
mul.f32 f404, f287, 0fBF66A5E5;
mul.f32 f405, f325, 0f3EDE2602;
sub.f32 f406, f404, f405;
mul.f32 f407, f325, 0fBF66A5E5;
fma.rn.f32 f408, f287, 0f3EDE2602, f407;
add.f32 f409, f178, f266;
add.f32 f410, f184, f272;
mul.f32 f411, f409, 0f3F000000;
sub.f32 f412, f90, f411;
sub.f32 f413, f184, f272;
mul.f32 f414, f413, 0f3F5DB3D7;
mul.f32 f415, f410, 0f3F000000;
sub.f32 f416, f96, f415;
sub.f32 f417, f178, f266;
mul.f32 f418, f417, 0f3F5DB3D7;
add.f32 f419, f351, f356;
add.f32 f420, f353, f358;
mul.f32 f421, f419, 0f3F000000;
sub.f32 f422, f110, f421;
sub.f32 f423, f353, f358;
mul.f32 f424, f423, 0f3F5DB3D7;
mul.f32 f425, f420, 0f3F000000;
sub.f32 f426, f148, f425;
sub.f32 f427, f351, f356;
mul.f32 f428, f427, 0f3F5DB3D7;
add.f32 f429, f361, f366;
add.f32 f430, f363, f368;
mul.f32 f431, f429, 0f3F000000;
sub.f32 f432, f121, f431;
sub.f32 f433, f363, f368;
mul.f32 f434, f433, 0f3F5DB3D7;
mul.f32 f435, f430, 0f3F000000;
sub.f32 f436, f159, f435;
sub.f32 f437, f361, f366;
mul.f32 f438, f437, 0f3F5DB3D7;
add.f32 f439, f371, f376;
add.f32 f440, f373, f378;
mul.f32 f441, f439, 0f3F000000;
sub.f32 f442, f133, f441;
sub.f32 f443, f373, f378;
mul.f32 f444, f443, 0f3F5DB3D7;
mul.f32 f445, f440, 0f3F000000;
sub.f32 f446, f171, f445;
sub.f32 f447, f371, f376;
mul.f32 f448, f447, 0f3F5DB3D7;
add.f32 f449, f381, f386;
add.f32 f450, f383, f388;
mul.f32 f451, f449, 0f3F000000;
sub.f32 f452, f134, f451;
sub.f32 f453, f383, f388;
mul.f32 f454, f453, 0f3F5DB3D7;
mul.f32 f455, f450, 0f3F000000;
sub.f32 f456, f172, f455;
sub.f32 f457, f381, f386;
mul.f32 f458, f457, 0f3F5DB3D7;
add.f32 f459, f391, f396;
add.f32 f460, f393, f398;
mul.f32 f461, f459, 0f3F000000;
sub.f32 f462, f122, f461;
sub.f32 f463, f393, f398;
mul.f32 f464, f463, 0f3F5DB3D7;
mul.f32 f465, f460, 0f3F000000;
sub.f32 f466, f160, f465;
sub.f32 f467, f391, f396;
mul.f32 f468, f467, 0f3F5DB3D7;
add.f32 f469, f401, f406;
add.f32 f470, f403, f408;
mul.f32 f471, f469, 0f3F000000;
sub.f32 f472, f111, f471;
sub.f32 f473, f403, f408;
mul.f32 f474, f473, 0f3F5DB3D7;
mul.f32 f475, f470, 0f3F000000;
sub.f32 f476, f149, f475;
sub.f32 f477, f401, f406;
mul.f32 f478, f477, 0f3F5DB3D7;
add.f32 %1, f96, f410;
add.f32 %0, f90, f409;
add.f32 %3, f148, f420;
add.f32 %2, f110, f419;
add.f32 %5, f159, f430;
add.f32 %4, f121, f429;
add.f32 %7, f171, f440;
add.f32 %6, f133, f439;
add.f32 %9, f172, f450;
add.f32 %8, f134, f449;
add.f32 %11, f160, f460;
add.f32 %10, f122, f459;
add.f32 %13, f149, f470;
add.f32 %12, f111, f469;
sub.f32 %15, f416, f418;
add.f32 %14, f414, f412;
sub.f32 %17, f426, f428;
add.f32 %16, f424, f422;
sub.f32 %19, f436, f438;
add.f32 %18, f434, f432;
sub.f32 %21, f446, f448;
add.f32 %20, f444, f442;
sub.f32 %23, f456, f458;
add.f32 %22, f454, f452;
sub.f32 %25, f466, f468;
add.f32 %24, f464, f462;
sub.f32 %27, f476, f478;
add.f32 %26, f474, f472;
add.f32 %29, f418, f416;
sub.f32 %28, f412, f414;
add.f32 %31, f428, f426;
sub.f32 %30, f422, f424;
add.f32 %33, f438, f436;
sub.f32 %32, f432, f434;
add.f32 %35, f448, f446;
sub.f32 %34, f442, f444;
add.f32 %37, f458, f456;
sub.f32 %36, f452, f454;
add.f32 %39, f468, f466;
sub.f32 %38, f462, f464;
add.f32 %41, f478, f476;
sub.f32 %40, f472, f474;
})"
     : "=f"(rmem[0].x), "=f"(rmem[0].y), "=f"(rmem[1].x), "=f"(rmem[1].y), "=f"(rmem[2].x), "=f"(rmem[2].y), "=f"(rmem[3].x), "=f"(rmem[3].y), "=f"(rmem[4].x), "=f"(rmem[4].y), "=f"(rmem[5].x), "=f"(rmem[5].y), "=f"(rmem[6].x), "=f"(rmem[6].y), "=f"(rmem[7].x), "=f"(rmem[7].y), "=f"(rmem[8].x), "=f"(rmem[8].y), "=f"(rmem[9].x), "=f"(rmem[9].y), "=f"(rmem[10].x), "=f"(rmem[10].y), "=f"(rmem[11].x), "=f"(rmem[11].y), "=f"(rmem[12].x), "=f"(rmem[12].y), "=f"(rmem[13].x), "=f"(rmem[13].y), "=f"(rmem[14].x), "=f"(rmem[14].y), "=f"(rmem[15].x), "=f"(rmem[15].y), "=f"(rmem[16].x), "=f"(rmem[16].y), "=f"(rmem[17].x), "=f"(rmem[17].y), "=f"(rmem[18].x), "=f"(rmem[18].y), "=f"(rmem[19].x), "=f"(rmem[19].y), "=f"(rmem[20].x), "=f"(rmem[20].y): "f"(rmem[0].x), "f"(rmem[0].y), "f"(rmem[1].x), "f"(rmem[1].y), "f"(rmem[1].y), "f"(rmem[2].x), "f"(rmem[2].y), "f"(rmem[2].y), "f"(rmem[3].x), "f"(rmem[3].y), "f"(rmem[4].x), "f"(rmem[4].y), "f"(rmem[4].y), "f"(rmem[5].x), "f"(rmem[5].y), "f"(rmem[5].y), "f"(rmem[6].x), "f"(rmem[6].y), "f"(rmem[7].x), "f"(rmem[7].y), "f"(rmem[7].y), "f"(rmem[8].x), "f"(rmem[8].y), "f"(rmem[8].y), "f"(rmem[9].x), "f"(rmem[9].y), "f"(rmem[10].x), "f"(rmem[10].y), "f"(rmem[10].y), "f"(rmem[11].x), "f"(rmem[11].y), "f"(rmem[11].y), "f"(rmem[12].x), "f"(rmem[12].y), "f"(rmem[13].x), "f"(rmem[13].y), "f"(rmem[13].y), "f"(rmem[14].x), "f"(rmem[14].y), "f"(rmem[14].y), "f"(rmem[15].x), "f"(rmem[15].y), "f"(rmem[16].x), "f"(rmem[16].y), "f"(rmem[16].y), "f"(rmem[17].x), "f"(rmem[17].y), "f"(rmem[17].y), "f"(rmem[18].x), "f"(rmem[18].y), "f"(rmem[19].x), "f"(rmem[19].y), "f"(rmem[19].y), "f"(rmem[20].x), "f"(rmem[20].y));
};


#endif
